<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 基本包装类型就是把简单数据类型包装成复杂数据类型
        /* var str = 'andy';
        console.log(str.length); */
        // 这里str明明是简单数据类型 却和对象 复杂数据额类型一样有length属性

        // 1.把简单数据类型包装为复杂数据类型;
        // var temp = new String('andy');
        // 2.把临时变量的值给str
        // str=temp;
        // 3.销毁临时变量
        // temp = null;

        // String  Number 和 Boolean都是基本包装类型
        // 基本包装类型就可以使用方法

        // 字符串具有不可变性,虽然看起来重新给字符串赋值是改变了，实际上是开辟了一个新的内存空间

        // 字符串的所有方法都不会改变原有字符串，而是返回一个新的字符串

        /*  var a = '改革春风吹满地,春天来了!';
         console.log(a.indexOf('春'));
         console.log(a.indexOf('春', 3)); */
        // 根据字符返回位子,indexOf('要查找的字符',[起始位子])
        // lastindexOf从后往前查找


        /* 查找字符串中某个字符出现的位子和次数
        利用indexOf来查找只要返回值不是-1就打印出来，并且继续往后查找，让index+1，一直循环，直到查找到最后一个 */
        /*  var str1 = 'osdgfospsdsoosdfosdo';
         index = str1.indexOf('o');
         var num = 0;
         while (index !== -1) {
             console.log(index);
             num++;
             index = str1.indexOf('o', index + 1);
         }
         console.log('字符o出现的次数是:' + num);
  */


        // 求'red'出现的位置和次数
        /* var arr = ['red', 'blue', 'red', 'green', 'pink', 'red'];
        inde = arr.indexOf('red');
        var nu = 0;
        while (inde !== -1) {
            console.log(inde);
            nu++;
            inde = arr.indexOf('red', inde + 1);
        }
        console.log('red出现的次数是:' + nu);
 */



        // 根据位子返回字符的三个方法:
        // 1.charAt();
        /* var str = 'andy';
        console.log(str.charAt(3));

        // 使用charAt方法遍历字符串:
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }
        // 2.charCodeAt()方法:
        console.log(str.charCodeAt(0));
        // 3.str[index]放法,H5新增的方法
        console.log(str[0]);
 */


        // 判断一个字符串中出现次数最多的是哪个字符并输出
        /*  使用chartAt()方法遍历字符串中每个字符,并把它们都存进一个对象中
         第一次存入时将其设为1，之后每次再出现都+1，这样就能得到每个字符串出现的次数 */


        /* var str = 'abcoefoxyozzopp';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);
            if (o[chars]) {//o[chars]是字符串的每个字符
                o[chars]++;
            } else {
                o[chars] = 1;//这一步就是把每个首次出现的字符加入对象里并赋值为1
            }
        }
        console.log(o);
        var max = 0;
        for (var k in o) {//利用for in 循环判断最大的次数
            if (o[k] > max) {
                max = o[k];//将最大次数赋值给max
                var c = k;//将最多次数的 字符赋值给c
            }
        }
        console.log('出现次数最多的字符是:' + c + '\n' + '次数是' + max); */


        /* 字符串的方法：
        1.拼接字符串concat(); */
        // var str = 'yuxiaoyao';
        // console.log(str.concat('love'));
        // 这个方法类似于+号，实际开发中直接使用+即可

        // 2.substr()方法
        // var str1 = '改革春风吹满地';
        // console.log(str1.substr(2, 2));
        // 这个方法的两个参数，第一个从哪个位子截取，第二个截取几个字符

        // 3.slice(start,end)方法,两个参数都是索引号，从第一个位子取到第二个位子，但是第二个取不到

        // 4.substring(start,end)方法,基本和slice相同，但是不接受负值

        // 5.replace()替换字符的方法:
        // var str = 'andy';
        // console.log(str.replace('a', 'b'));

        // 把下列字符串的o全都替换为*；
        /* var str1 = 'abcoefoxyozzopp';
        while (str1.indexOf('o') !== -1) {
            str1 = str1.replace('o', '*');
        }
        console.log(str1); */

        // 6.split()把字符串转换为数组  和把数组转换为字符串的join()方法相反
        var str = 'red,blue,green,yellow';
        console.log(str.split(','));
        var str1 = 'red&blue&green&yellow';
        console.log(str1.split('&'));

        // 7.转换大小写的方法:toUpperCase  toLowerCase;
        var str3 = 'sdADSFSFsdfsdf';
        console.log(str3.toLowerCase());


    </script>
</head>

<body>

</body>

</html>